package com.le.tester.soundCode;

import com.le.tester.utils.BigDecimalUtil;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * 描述：BigDecimal multiply
 */
public class BigDecimalMultiply {

    private BigDecimal price;

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }


    public static void main(String[] args) {
        BigDecimalMultiply bigDecimalMultiply = new BigDecimalMultiply();
        bigDecimalMultiply.setPrice(new BigDecimal(120.00));
        //直接使用BigDecimal进行计算(绝对不能这么干啊)
        BigDecimal bigDecimal = new BigDecimal(120.00);
        BigDecimal bigDecimal1 = new BigDecimal(1);
        BigDecimal price = bigDecimalMultiply.getPrice();
        BigDecimal mulNum1 = price.multiply(new BigDecimal(1));
        //1.因为使用的是Double对象，在转成Double的时候，整形的就会默认带一位小数
        //2.scale值是看传入的值有几位小数进行获取
        //3.intCompact缩放为整数的结果，有效的数字，会转成整数的991和9988
        //不建议这么直接的写数值在在这里（请使用String）
        BigDecimal mulNum2 = BigDecimalUtil.mul(99.11, 99.88);

        //以后涉及到金钱的计算，都会用到BigDecimalUtil进行计算
        //涉及到的两位传参数，都会new BigDecimal("String");一定要转成String
        //最后再进行BigDecimal中方法的调用
        BigDecimal frontMulNum = new BigDecimal("99.11");
        BigDecimal lastMulNum = new BigDecimal(String.valueOf(99.88));
        BigDecimal mulNum3 = BigDecimalUtil.mul(frontMulNum.doubleValue(), lastMulNum.doubleValue());
        BigDecimal mulNum4 = frontMulNum.add(lastMulNum);
        System.out.println(mulNum1 + " and " + mulNum2 + " and " + mulNum3 + " and " + mulNum4);

    }


}

